﻿namespace WizardEngine.Core.Specification
{
    /// <summary>
    /// Provides access for steps to their parents.
    /// </summary>
    /// <remarks>
    /// For now the only step owner would be <see cref="FlowSpecification{T}"/>. However
    /// in future more complex hierarchy might get introduced (like steps containing other steps). 
    /// Hence the interface separation.
    /// </remarks>
    /// <typeparam name="T"></typeparam>
    internal interface IStepOwner<T> : IStepBinder<T> where T : FlowState
    {
        /// <summary>
        /// Provides access to initial step.
        /// </summary>
        IStepSpecification<T> InitialStep { get; set; }
    }
}